#!/usr/bin/env python
# -*- coding: utf8 -*-
# 
# 
##########################################################################################
#
#
# Responsable del codigo(no se quiere hacer cargo, pero lo presionamos)
# pablohernanjuan at hotmail dot com
# Programado en Python utilizando para la interface wxglade, editor preferido
# Geany, la base de datos Mysql. 
#
#
##########################################################################################
#
#
# Este programa es software libre; usted puede redistruirlo y/o modificarlo bajo
# los términos de la Licencia Pública General GNU, tal y como está publicada
# por la Free Software Foundation; ya sea la versión 2 de la Licencia, o (a su
# elección) cualquier versión posterior.
#
# Este programa se distribuye con la intención de ser útil, pero SIN NINGUNA
# GARANTÍA; incluso sin la garantía implícita de USABILIDAD O UTILIDAD PARA UN
# FIN PARTICULAR. Vea la Licencia Pública General GNU para más detalles.
#
# Usted debería haber recibido una copia de la Licencia Pública General GNU
# junto a este programa; si no es así, escriba a la Free Software Foundation,
# Inc. 675 Mass Ave, Cambridge, MA 02139, EEUU.
#
#
#########################################################################################

#Importamos los modulos necesarios
import wx
import MySQLdb
import imp
import sys
import wx.lib.mixins.listctrl

class Listado(wx.Frame):
    def __init__(self, *args, **kwds):

        kwds["style"] = wx.DEFAULT_FRAME_STYLE
        wx.Frame.__init__(self, *args, **kwds)
        self.panel_1 = wx.Panel(self, -1)
        self.Bind(wx.EVT_CLOSE,self.OnCerrar)        
        self.list_ctrl_1 = wx.ListCtrl(self.panel_1, -1, style=wx.LC_REPORT|wx.SUNKEN_BORDER)
        db = MySQLdb.connect(host='localhost',user='comic',passwd='comic',db='historietas')
        # Creamos un cursor de la misma        
        cursor = db.cursor()
        # Y ejecutamos una orden SQL que borra los datos de la base de datos, la vacia
        cursor.execute('''SELECT titulo,numero,autor,critica,genero,editorial FROM coleccion''')
        cursors=cursor.fetchall()
        # No nos olvidamos de cerrar el cursor
        cursor.close()

        encabezado = u'columns = ["Titulo","Numero","Autor", "Critica", "Genero","Editorial"]\n'
        h=open('listalum.py', 'w')
        h.write('# -*- coding: UTF8 -*-\n')
        h.write('\n')
        h.write(encabezado.encode('utf-8'))
        h.write('\n')
        h.write('rows = [\n')
        d=len(cursors)
        for cadaobj in range(0, (d)):
            h.write('%s,\n' % str(cursors[cadaobj]))
            #h.write(str(q[0][0])+str(q[x])+',\n')
        h.write(']')
        h.close()

        w=open('listalum.py', 'r')
        imp.load_module('listalum', w, 'listalum', ('.py', 'U', 1))
        import listalum as listalum
        w.close()
        reload(listalum)

        for col, text in enumerate(listalum.columns):
            self.list_ctrl_1.InsertColumn(col, text.decode('utf-8'))
        self.itemDataMap = {}
        for item in listalum.rows:
            index = self.list_ctrl_1.InsertStringItem(sys.maxint, str(item[0]))
            for col, text in enumerate(item[1:]):
                self.list_ctrl_1.SetStringItem(index, col+1, str(text))
            self.list_ctrl_1.SetItemData(index, index)
            self.itemDataMap[index] = item
        self.list_ctrl_1.SetColumnWidth(0, 100)
        self.list_ctrl_1.SetColumnWidth(1, 100)
        self.list_ctrl_1.SetColumnWidth(2, 100)
        self.list_ctrl_1.SetColumnWidth(3, 100)
        self.list_ctrl_1.SetColumnWidth(4, 100)
        self.list_ctrl_1.SetColumnWidth(5, 100)

             
        self.__set_properties()
        self.__do_layout()

 
    def __set_properties(self):

        self.SetTitle("Coleccion")
        self.CenterOnScreen()

 
    def __do_layout(self):

        sizer_1 = wx.BoxSizer(wx.VERTICAL)
        grid_sizer_1 = wx.GridSizer(1, 1, 0, 0)
        grid_sizer_1.Add(self.list_ctrl_1, 1, wx.EXPAND, 0)
        self.panel_1.SetSizer(grid_sizer_1)
        sizer_1.Add(self.panel_1, 1, wx.EXPAND, 0)
        self.SetSizer(sizer_1)
        sizer_1.Fit(self)
        self.Layout()
        self.SetSize((350, 500))

    def OnCerrar(self, event):
        try:
            self.Destroy()
        finally:
            import menu
            ventana = menu.Menu(None, -1,"")
            ventana.Show(True)


if __name__ == "__main__":
    app = wx.PySimpleApp(0)
    wx.InitAllImageHandlers()
    ventana = Listado(None, -1, "")
    app.SetTopWindow(ventana)
    ventana.Show()
    app.MainLoop()
